package com.macro.mall.pms.service;

import com.github.pagehelper.Page;
import com.macro.mall.pms.domain.AttributeCategory;
import com.macro.mall.pms.entity.AttributeCategoryEntity;
import com.macro.mall.pms.service.bo.InsertAttributeCategoryInput;
import com.macro.mall.pms.service.bo.PagedQueryAttributeCategoryInput;
import com.macro.mall.pms.service.bo.UpdateAttributeCategoryInput;

import java.util.List;

/**
 * 产品属性分类Service
 *
 * @author xuyanjun
 * @date 2019-12-14
 */
public interface AttributeCategoryService {

    /**
     * 新增产品属性分类
     *
     * @param input input
     * @return 新增id
     */
    long insert(InsertAttributeCategoryInput input);

    /**
     * 修改产品属性分类
     *
     * @param input input
     */
    void update(UpdateAttributeCategoryInput input);

    /**
     * 删除产品属性分类
     *
     * @param id id
     */
    void delete(long id);

    /**
     * 根据Id获取产品属性分类
     *
     * @param id id
     * @return 产品属性分类
     */
    AttributeCategoryEntity getById(long id);

    /**
     * 根据批量Id获取产品属性分类
     *
     * @param batchIds 批量ids
     * @return 产品属性分类集合
     */
    List<AttributeCategoryEntity> listByBatchIds(List<Long> batchIds);

    /**
     * 分页查询
     *
     * @param input input
     * @return 分页的产品属性分类
     */
    Page<AttributeCategoryEntity> pagedQuery(PagedQueryAttributeCategoryInput input);

    /**
     * 将实体对象转换成domain对象
     *
     * @param attributeCategoryEntity 实体
     * @return attributeCategory
     */
    AttributeCategory entityToDomain(AttributeCategoryEntity attributeCategoryEntity);

    /**
     * 将实体对象转换成domain对象
     *
     * @param attributeCategoryEntities 实体
     * @return attributeCategorys
     */
    List<AttributeCategory> entityToDomain(List<AttributeCategoryEntity> attributeCategoryEntities);

}